package com.chenjun.designpattern.behavior.command;

public class Andriod源码解释回调
{
	public static void main(String[] args)
	{
		Button button = new Button();
		button.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				System.out.println("匿名内部类实现回调");
			}
		});
		button.performClick();
	}
}

interface OnClickListener
{
	void onClick(View v);
}

abstract class Activity
{
	public abstract void onCreate();
}

class MainActivity extends Activity implements OnClickListener
{
	/**
	 * Class A 包含Class B的引用----->背景二
	 */
	private Button button;

	@Override
	public void onCreate()
	{
		/**
		 * Class A 调用View的方法,而Button extends View----->A类调用B类的某个方法 C
		 */
		button.setOnClickListener(this);
	}

	/**
	 * 用户点击Button时调用的回调函数，你可以做你要做的事 这里我做的是用Toast提示OnClick
	 */
	@Override
	public void onClick(View v)
	{
		System.out.println("执行了OnClick()的具体动作.");
	}
}

class View
{
	protected OnClickListener onClickListener;

	/**
	 * @param onClickListener
	 */
	public void setOnClickListener(OnClickListener onClickListener)
	{
		this.onClickListener = onClickListener;
	}

	/**
	 * 重要
	 */
	public void performClick()
	{
		onClickListener.onClick(this);
	}
}

class Button extends View
{
	//集成了VIEW的成员变量和方法
}
